<?php
/**
 * CRUD de administradores
 * 
 * @author André Coura <andreccls@gmail.com>
 * @since 25/07/2011
 */
//necessário para todas as páginas do admin (facilitador)
include("defaultAdmin.php");
require_once(PASTA_DAO."Administrador.class.php");

//verificação se o usuário esta logado, cado contrário, este será redirecionado para o login.
if($objUsrSession->getIdAdministrador() == 0){
	HttpUtil::vaiPara("login.php?msg=1");
}


/**
 * VERIFICAÇÃO DA TELA QUE SERÁ EXIBIDA
 */
 if(!isset($_GET["id"]))
	$id = "";
else
	$id = (int)$_GET["id"];
if(!is_numeric($id) || $id == 0 || $id=="") 
	$id = null;
$objCtrlSmarty->assign("id_admin",$id);
$objAdministrador = new Administrador();
if(!isset($_GET["a"]))
	$_GET["a"] = "";
switch ($_GET["a"]){
	case 'form':
		if(isset($id)){
			//busco os dados do banco
			$arrCampos = $objAdministrador->buscaCampos($id);
			//seto no formulário os valores dos campos automaticamente
			foreach ($arrCampos as $nomeCampo => $fieldData) {
				if ($nomeCampo != 'senha_admin')
					//debug("passou");
					$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
			}
		}
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formAdministradores.tpl"));
		break;
	case 'post':
		try{
			//validação preguiça de fazer em javascript
			$arrErros = array();
			if($_POST["nome_admin"]=="")
				$arrErros["MENS_ERRO_NOME"] = "O Nome é obrigatório";
			if($_POST["email_admin"]=="")
				$arrErros["MENS_ERRO_EMAIL"] = "o Email é obrigatório";
			if(isset($_POST["id_admin"]) && is_numeric($_POST["id_admin"])){
				
				$arrDados = $objAdministrador->buscaCampos($_POST["id_admin"]);
				
				if($_POST["senha_admin"]!="" && $_POST["senha_admin"] == $_POST["confsenha_admin"] 
					&& base64_encode(md5($_POST["senha_atual"])) == $arrDados["senha_admin"]) {
					$_POST["senha_admin"] = base64_encode(md5($_POST["senha_admin"]));
					
				}else if($_POST["senha_admin"]!="" && ($_POST["senha_admin"] != $_POST["confsenha_admin"])) {
					$arrErros["MENS_ERRO_SENHA"] = "A senha deve ser igual à sua confirmação.";

				}else if (base64_encode(md5($_POST["senha_atual"]))!=$arrDados["senha_admin"] && $_POST["senha_admin"]!="") {
					$arrErros["MENS_ERRO_SENHA"] = "A senha atual está incorreta.";
				}else if($_POST["senha_admin"]=="" && $_POST["confsenha_admin"]=="") {
					$_POST["senha_admin"] = $arrDados["senha_admin"];
				}
					
			}else{
				if($_POST["senha_admin"]=="" && $_POST["confsenha_admin"]=="")
					$arrErros["MENS_ERRO_SENHA"] = "A senha é um campo obrigatório";
				else if($_POST["senha_admin"] != $_POST["confsenha_admin"])
					$arrErros["MENS_ERRO_SENHA"] = "A senha deve ser igual à sua confirmação.";
				else
					$_POST["senha_admin"] = base64_encode(md5($_POST["senha_admin"]));
			}
			//fim validação dos dados
			
			if(count($arrErros) == 0){
				$id = (int)$_POST["id_admin"];
				if(!is_numeric($id) || $id == 0 || $id=="") 
					$id = null;
				$objAdministrador->alterar($id,$_POST,null);
				HttpUtil::vaiPara("CrudAdministradores.php?msg=3");
			}else{
				//loop para preencher, em caso de erro, o formulário
				foreach ($_POST as $nomeCampo => $fieldData) {
					$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
				}
				//loop para setar os lugares com os erros
				foreach ($arrErros as $nomeErro => $conteudo) {
					$objCtrlSmarty->assign($nomeErro,$conteudo);
				}
				//exibo o form aqui
				$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formAdministradores.tpl"));
			}
		}catch(CustonException $e){
			HttpUtil::vaiPara("CrudAdministradores.php?msg=5");
		}
		break;
	case 'excluir':
		$objAdministrador->deletar($id);
		HttpUtil::vaiPara("CrudAdministradores.php?msg=4");
		break;
	
	case 'lista':
	default:
		$arrDados = Utf8Parsers::matrizUtf8Encode($objAdministrador->getListaAdministradores());
		$objCtrlSmarty->assign("arrAdministradores", $arrDados);
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/listaAdministradores.tpl"));
		break;
}

//definição da estrutura do admin <cabecalho, corpo e rodape>
$objCtrlSmarty->assign("ESTRUTURA",$objCtrlSmarty->fetch(TPLS_FILE."admin/adminEstrutura.tpl"));

//ultima coisa que deve ter no arquivo, serve para imprimir a tela
$objCtrlSmarty->display(TPLS_FILE."index.tpl");
?>